package com.java2404.micro.common.utils;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5 工具类
 */
public class MD5 {
    public static String getMD5Checksum(String input) {
        try {
            // 获取MD5算法的MessageDigest实例
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 更新摘要以包含输入字符串的字节
            md.update(input.getBytes());
            // 计算哈希值
            byte[] digest = md.digest();
            // 将字节转换为十六进制表示
            BigInteger no = new BigInteger(1, digest);
            // 将BigInteger转换为十六进制字符串，并去掉前缀"0x"
            String hashtext = no.toString(16);
            // 如果哈希值的长度不足32位，前面补0
            while (hashtext.length() < 32) {
                hashtext = "0" + hashtext;
            }
            return hashtext;
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
}
